package com.service;


import com.entity.dto.MySQLExportDto;
import com.entity.param.MySQLSchemaParam;
import com.entity.vo.ColumnVo;
import com.entity.vo.MySqlTablesVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author xiaoshu
 * @description
 * @date 2024年03月12日 23:41
 */

public interface MySqlSchemaService {

    /**
     * 导出某时间节点前数据到文件
     * 导出文件在，mysql服务器
     * @param mySQLExportDto 时间节点
     * @return 导出是否成功
     */
    Boolean exportDataToFile(MySQLExportDto mySQLExportDto);


    /**
     * 数据库 表查询
     * @param databaseName 库名称
     * @return List<MySqlTablesVo>
     */
    List<MySqlTablesVo> schemaTables(String databaseName);

    /**
     * 列表查询
     * @param param
     * @return
     */
    List<Map<String, Object>> queryList(MySQLSchemaParam param);

    /**
     * 表字段查询
     * @param param 查询参数
     * @return 导出是否成功
     */
    List<ColumnVo> queryColumn(MySQLSchemaParam param);

    /**
     * 表字段备注字典查询
     * @param param 查询参数
     * @return 导出是否成功
     */
    Map<String,String> columnCommentMap(MySQLSchemaParam param);


    /**
     * 获取 ，拼接字段查询列
     * @param columns 表字段
     * @return String
     */
    String getSQLColumn(List<ColumnVo> columns);

    /**
     * 获取主键拼接字符
     * @param columns
     * @return
     */
    String getPriKey(List<ColumnVo> columns);

    Long queryCount(@Param("param") MySQLSchemaParam param);
}
